#!/bin/bash

# 1. 写一个脚本，接收两个选项
#     -n      <-- 指定用户名
#     -f      <-- 指定需要查询的字段，值可以是 uid, gid, home, shell
#    按照参数的值输出相应用户(通过-n指定)的相应字段(通过-f指定)。


# 用户数据库文件
datafile=/etc/passwd

# 字段名字和字段位置的对应关系
declare -A fields
fields[name]=1
fields[password]=2
fields[uid]=3
fields[gid]=4
fields[comment]=5
fields[home]=6
fields[shell]=7

# 处理参数
while test $# -ne 0
do
    case "$1" in
        -n)
            user=$2
            shift 2
            ;;
        -f)
            field=$2
            shift 2
            ;;
        *)
            echo "unrecognized argument $1" >&1
            exit 1
            ;;
    esac
done
if test -z "$user"; then
    echo "user name is required" >&1
    exit 1
fi
if test -z "$field"; then
    echo "field name is required" >&1
    exit 1
fi

pos=${fields[$field]}
# awk -F: -v target=$pos "/^$user:/{print \$1,\$target}" $datafile
grep -w "^$user" $datafile | awk -F: -v target=$pos '{print $1,$target}'
